package thefirst.support.model;

import java.io.File;
import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import thefirst.common.PagingBean;
@Repository
public class NoticeServiceImpl implements NoticeService {
	@Resource(name="noticeDaoImpl")
	private NoticeDao noticeDao;
	/**
	 * 공지사항 DB에 저장(insert)
	 */
	@Override
	public int writeNotice(NoticeVO nvo) throws SQLException {
		return noticeDao.writeNotice(nvo);
	}
	/**
	 * 글번호로 공지사항 정보 가져오기(select)
	 */
	@Override
	public NoticeVO showNoticeInfoNoHits(int no) throws SQLException {
		NoticeVO nvo=noticeDao.showNoticeInfoNoHits(no);
		System.out.println("Notice Service:"+nvo);
		return nvo;
	}
	/**
	 * 공지사항 전체 리스트 가져오기(페이징 처리)
	 */
	@Override
	public NoticeListVO getNoticeList(String pageNo) throws SQLException {
		if(pageNo==null||pageNo==""){
			pageNo="1";
		}
		List<NoticeVO> list=noticeDao.getNoticeList(pageNo);
		int total=noticeDao.totalNoticeContent();
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		NoticeListVO nList=new NoticeListVO(list,paging);
		return nList;
	}
	/**
	 * 공지사항 글 정보 가져오기(조회수를 올려준다.)
	 */
	@Override
	public NoticeVO showNoticeInfo(int no) throws SQLException {
		int result=noticeDao.updateHits(no);
		System.out.println("update hits:"+result);
		NoticeVO nvo=noticeDao.showNoticeInfoNoHits(no);
		System.out.println("test show");
		System.out.println("test show:"+nvo);
		return nvo;
	}
	/**
	 * 공지사항 수정(update)
	 */
	@Override
	public int updateNotice(NoticeVO nvo) throws SQLException {
		System.out.println("update notice service:"+nvo);
		return noticeDao.updateNotice(nvo);
	}
	/**
	 * 공지사항 삭제(delete)
	 */
	@Override
	public void deleteNotice(int no) throws SQLException {
		noticeDao.deleteNotice(no);
	}
	/**
	 * 글번호로 DB에 저장된 파일값들 null로 수정 - 파일삭제할 때 필요
	 */
	@Override
	public int updateNoticeNoFile(int no) throws SQLException {
		int result=noticeDao.updateNoticeNoFile(no);
		System.out.println("deleteFile 서비스:"+result);
		return result;
	}
	/**
	 * 폴더에 저장된 실제파일을 삭제
	 */
	@Override
	public void deleteFile(String savFileName) throws Exception {
		File file=new File(savFileName);
		file.delete();
	}
	/**
	 * 메인페이지의 left에 공지사항 글 5개 가져오기
	 */
	@Override
	public List<NoticeVO> getNoticeListForLeft() throws SQLException {
		return noticeDao.getNoticeListForLeft();
	}
	/**
	 * 제목으로 검색하기(페이징 처리)
	 */
	@Override
	public NoticeListVO findNoticeListByTitle(NoticeSearchVO nsvo) throws SQLException {
		System.out.println("검색:"+nsvo);
		String pageNo=nsvo.getPageNo();
		if(pageNo==null||pageNo==""){
			nsvo.setPageNo("1");
			pageNo="1";
		}
		List<NoticeVO> list=noticeDao.findNoticeListByTitle(nsvo);
		System.out.println("리스트:"+list);
		System.out.println(nsvo.getTitle());
		int total=noticeDao.totalNoticeContentByTitle(nsvo.getTitle());
		System.out.println("토탈:"+total);
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		NoticeListVO nList=new NoticeListVO(list,paging);
		return nList;
	}
	/**
	 * 내용으로 검색하기(페이징 처리)
	 */
	@Override
	public NoticeListVO findNoticeListByContent(NoticeSearchVO nsvo)
			throws SQLException {
		String pageNo=nsvo.getPageNo();
		if(pageNo==null||pageNo==""){
			nsvo.setPageNo("1");
			pageNo="1";
		}
		List<NoticeVO> list=noticeDao.findNoticeListByContent(nsvo);
		System.out.println(nsvo.getContent());
		int total=noticeDao.totalNoticeContentByContent(nsvo.getContent());
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		NoticeListVO nList=new NoticeListVO(list,paging);
		return nList;
	}

}
